package code.D1214;

import java.util.HashSet;

/**
 * author : yeswater
 * date : 2023/12/14
 * 
 * 最长连续序列
 * 
 * 起点: 这个数的前一个数不存在于数组中
 * 终点: 这个数的后一个数不存在于数组中
 * 
 */

public class T128 {
    
    // 简单思路
    public int longestConsecutive1(int[] nums) {
        int res = 0;
        HashSet<Integer> set = new HashSet<>();
        for (int num : nums) {
            set.add(num);
        }
        int seqLen = 0;
        for (int num : set) { // set 遍历比 数组快
            if (!set.contains(num-1)) {
                seqLen = 1;
                // 不断查找连续序列 直到 num 的下一个数不存在于数组
                while (set.contains(++num)) seqLen++;
                res = Math.max(res, seqLen);
            }
        }
        return res;
    }
    
}
